package src.twice;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class tests1 {

    public static void main(String[] args) {
        try {
            test6();
        } catch (Exception e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }

    /**
     * 实现解压缩方法
     */
    public static void test6() throws Exception {
        // 1.定义需要解压缩文件File对象
        File src1 = new File("G:/测试文件夹/wrod.zip");
        // 2.设定解压缩之后的路径
        File src2 = new File("G:/测试文件夹" + File.separator + InterceptingFileSuffixes(src1.getName(), false));
        MyMkdirs(src2);
        // 3.定义解压缩ZipInputStream对象
        ZipInputStream zinput = new ZipInputStream(new FileInputStream(src1));
        // 4.获取解压缩目录ZipEntry对象
        ZipEntry entry = zinput.getNextEntry();
        // 5.创建指定条目（entry）文件
        File file = new File(src2.getPath(), entry.toString());
        file.createNewFile();
        // 6.读取写入数据
        FileOutputStream fOutput = new FileOutputStream(file);
        byte[] bs = new byte[1024];
        while (-1 != (zinput.read(bs))) {
            fOutput.write(bs);
            System.out.println("解压缩中.......");
        }
        // 7.释放系统资源
        fOutput.flush();
        fOutput.close();
        zinput.close();
        System.out.println("解压完成!!!!!!!!");
    }

    /**
     * path代表路径， true代表截取字符'.'之后的文件后缀，false代表截取'.'之前的字符串
     *
     * @param path
     * @param b
     */
    protected static String InterceptingFileSuffixes(String path, boolean b) {
        return b == true ? path.substring(path.indexOf("."), path.length()) : path.substring(0, path.indexOf("."));
    }

    /**
     * 查看给定的File对象文件存不存在，如果不存在，则构建一个
     *
     * @param file
     */
    protected static void MyMkdirs(File file) {
        if (!file.exists()) {
            file.mkdirs();
            System.out.println("因为所选路径不存在，系统默认构建指定路径");
        } else {
            System.out.println("文件目录已经存在");
        }
    }
}


